package com.galaxy.coupon.domain.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import com.galaxy.common.mybatis.core.domain.BaseEntity;
import com.galaxy.coupon.domain.CouponTemplate;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 优惠券模板视图对象
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = CouponTemplate.class)
public class CouponTemplateVo extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 主键 */
    @ExcelProperty(value = "优惠券ID")
    private Long id;

    /** 优惠券名称 */
    @ExcelProperty(value = "优惠券名称")
    private String name;

    /** 优惠券编码 */
    @ExcelProperty(value = "优惠券编码")
    private String code;

    /** 优惠券类型(1:满减券,2:折扣券,3:立减券) */
    @ExcelProperty(value = "优惠券类型")
    private Integer type;

    /** 优惠券类型名称 */
    @ExcelProperty(value = "优惠券类型名称")
    private String typeName;

    /** 优惠金额/折扣率 */
    @ExcelProperty(value = "优惠金额/折扣率")
    private BigDecimal discount;

    /** 最低消费金额 */
    @ExcelProperty(value = "最低消费金额")
    private BigDecimal minPoint;

    /** 使用范围(0:全场通用,1:指定品类,2:指定商品) */
    @ExcelProperty(value = "使用范围")
    private Integer useScope;

    /** 使用范围名称 */
    @ExcelProperty(value = "使用范围名称")
    private String useScopeName;

    /** 范围ID(品类ID或商品ID，多个以逗号分隔) */
    @ExcelProperty(value = "范围ID")
    private String scopeId;

    /** 有效期开始时间 */
    @ExcelProperty(value = "有效期开始时间")
    private Date startTime;

    /** 有效期结束时间 */
    @ExcelProperty(value = "有效期结束时间")
    private Date endTime;

    /** 发行总量(-1表示不限量) */
    @ExcelProperty(value = "发行总量")
    private Integer totalCount;

    /** 已使用数量 */
    @ExcelProperty(value = "已使用数量")
    private Integer usedCount;

    /** 已领取数量 */
    @ExcelProperty(value = "已领取数量")
    private Integer receiveCount;

    /** 状态(0:未启用,1:已启用,2:已结束) */
    @ExcelProperty(value = "状态")
    private Integer status;

    /** 状态名称 */
    @ExcelProperty(value = "状态名称")
    private String statusName;
}
